/*
 * SoftwareSAR - 1.0
 */
package br.com.cpqd.ssar.gerenciador;

import br.com.cpqd.ssar.gerenciador.gui.PainelGerenciador;
import br.com.cpqd.ssar.mediador.RequisicaoPainel;
import br.com.cpqd.ssar.mediador.RequisicaoServicos;
import br.com.cpqd.ssar.posprocessamento.Visualizador;
import br.com.cpqd.ssar.utilitarias.Geometria;
import java.util.Vector;
import javax.swing.JPanel;

/**
 * Template para Classe Gerenciador
 * @author Rafael Buck
 * @version 1.0
 */
public class ControladorGerenciador implements RequisicaoPainel {

    /**
     * Painel do Gerenciador
     */
    private PainelGerenciador painelGerenciador;
    /**
     * Interface para Requisicao de Servicos
     */
    private RequisicaoServicos interfaceServicos;

    /**
     * Método Construtor
     * @param interfaceServicos Requisicao Servicos
     */
    public ControladorGerenciador(RequisicaoServicos interfaceServicos) {

        // Cria seu proprio JPanel
        this.interfaceServicos = interfaceServicos;
        painelGerenciador = new PainelGerenciador(interfaceServicos);
        painelGerenciador.setVisible(true);
   
    }

    /**
     * Obtém Painel Completo do Pacote
     * @return JPanel
     */
    @Override
    public JPanel obterPainel() {
        return painelGerenciador;
    }

    /**
     * Get the value of interfaceServicos
     * @return the value of interfaceServicos
     */
    public RequisicaoServicos getInterfaceServicos() {
        return interfaceServicos;
    }


    /**
     * Set the value of interfaceServicos
     * @param interfaceServicos new value of interfaceServicos
     */
    public void setInterfaceServicos(RequisicaoServicos interfaceServicos) {
        this.interfaceServicos = interfaceServicos;
    }

    /**
     * Obtem um Vector com a estrutura da árvore de Geometrias
     * @return Vector
     */
    public Vector obterArvoreGeometria() {
        return painelGerenciador.getArvoreGeometria();
    }
    
    /**
     * Adiciona gráfico de pós-processamento ná arvore de simulação
     * @param Visualizador - v
     */
    public void addRelatorio(Visualizador v){        
        painelGerenciador.addRelatorioNaArvore(v);  
       
    }
    /**
     * Recebe um Vector de relatorioPosProcessamento para ser adicionado a
     * arvore de objetos
     * @param v
     */
    public void addVectorPreRelatorios(Vector v){
        painelGerenciador.addVectorPreRelatoriosNaArvore(v);
    }
    
     /**
     * Retorna todos os relatórios gerados que estão na estrutura da árvore
     * @return Vector
     */
    public Vector getTodosRelatorios(){
        return painelGerenciador.getListaRelatorios();
    }
    
    /**
     * Retorna todos os Pre Relatórios gerados que estão na estrutura da árvore
     * @return Vector
     */
    public Vector getTodosPreRelatorios(){
        return painelGerenciador.getListaPreRelatorios();
    }

    /**
     * Metodo que retorna um vetor de Geometrias
     * @return Geometria[]
     */
    public Geometria[] obterGeometria() {
        return painelGerenciador.getGeometrias();
    }

    /**
     * 
     * @param geo
     */
    public void inserirVectorListGeometry(Vector geo) {
        // System.out.println("tam Vector geo: " + geo.size());
        painelGerenciador.inserirVectorListGeometry(geo);
    }
    
     /**
     * Metodo usado para reconstrução da estrutura da árvore de Fontes Eletromagnéticas
     * de Simulação, neste caso, é usado quando o Usuário abre um projeto existete
     * @param vFontes
     */
    public void carregarListaFontes(Vector vFontes){
        painelGerenciador.carregarListaFontes(vFontes);
    }
    
    public Geometria getDominioComputacional(){
        return painelGerenciador.getDominioComputacional();
    }
    
    public void setDominioComputacional(Geometria dominio){
        painelGerenciador.setDominioComputacional(dominio);
        
        
    }

    public int getQuantidadeGeometrias(){
        return painelGerenciador.getQuantidadeGeometrias();
    }
            

}
